6.3.5 更新帖子

在学会如何获取帖子之后,我们接下来要做的就是学习如何对数据库记录中的信息进行更新。假设现在程序已经通过获取操作把帖子保存到了 readPost 变量里面,那么它应该可以对帖子进行修改,并通过更新操作将这些修改反映至数据库:

readPost.Content = "Bonjour Monde!"
readPost.Author = "Pierre"
readPost.Update()

更新操作可以通过为 Post 结构添加 Update 方法来实现,代码清单6-10展示了这个方法的具体实现代码。

代码清单6-10 更新一篇帖子

func (post *Post) Update() (err error) {
  _, err = Db.Exec("update posts set content = $2, author = $3 where id =
  ➥$1", post.Id, post.Content, post.Author)
  return
}

跟创建帖子时的做法不同,这次展示的更新操作没有使用预处理语句,而是直接调用 sql.DB 结构的 Exec 方法。这是因为程序既不需要对接收者进行任何更新,也不需要对方法返回的结果进行扫描(scan),所以它才会选择使用速度更快的 Exec 方法来执行查询:

_, err = Db.Exec(post.Id, post.Content, post.Author)

Exec 方法会返回一个 sql.Result 和一个可能出现的错误,其中 sql.Result 记录的是受查询影响的行的数量以及可能会出现的最后插入id。因为更新操作对 sql.Result 记录的这两项信息都不感兴趣,所以程序会通过将 sql.Result 赋值给下划线 _)来忽略它。如果一切顺利,没有出现错误,当 Exec 执行完毕时,给定的帖子就会被更新。

results matching ""

    No results matching ""